To expand the number of operating systems and application programs that can run on a computer system, a field of technology has developed in which a given computer, called a host, will include an emulator program that allows the host computer to emulate other computing device configurations. The host computer can both run software configured for its native hardware and software configured for computers having different hardware configurations.
When a guest computer system is emulated on a host computer system, the guest computer system is called a “virtual machine” as the guest computer system only exists in the host computer system as a software representation of the operation of one specific hardware configuration that may diverge from the native machine. The virtual machine presents to the software operating on the virtual machine an emulated hardware configuration.
A virtual machine management system (sometimes referred to as a virtual machine monitor or a hypervisor) is also often employed to manage one or more virtual machines so that multiple virtual machines can run on a single computing device concurrently. The virtual machine management system runs directly on the native hardware and virtualizes the resources of the machine by exposing interfaces to virtual machines for access to the underlying hardware. A host operating system and a virtual machine management system may run side-by-side on the same physical hardware. For purposes of clarity will we use the abbreviation VMM to refer to all incarnations of a virtual machine management system.
One of the many advantages of a virtual machine (VM) over a physical machine is the ability to quickly and cheaply create multiple instances of the same virtual machine. The abstraction of the virtual machine from the underlying hardware provides for flexible resource allocation and facilitates the ability to move, or “migrate,” virtual machines from one host machine to another.
Being able to migrate a virtual machine quickly and easily from one host machine to another is useful, for example, for “load balancing” systems, performing hardware or software upgrades, or handling disaster recovery. More specifically, if a virtual machine requires more processing power than is available on one host machine, it can be moved to another host machine that has extra capacity. Second, if the host machine requires hardware maintenance or a software upgrade, the virtual machine may be migrated from one physical machine to another temporarily, which thereby allows the first physical machine to be taken down and upgraded. Similarly, in the case of disaster recovery, all virtual machines of a datacenter can be migrated to another datacenter that is out of harm's way and then migrated back when the threat passes. Additionally, virtual machines facilitate the offloading of a company or enterprises operation to a hosted datacenter simply to reduce the need for maintaining and upgrading resources. In all cases, this allows, for example, critical business applications to remain up and running without interruption and without the user even being aware of the interruption.